#ifndef _OBJETO_RIGIDO_H_

#define _OBJETO_RIGIDO_H_

#include "Superficie_Triangular.h"
#include "Volumen_Tetraedral.h"
#include "Vertice.h"
#include "VolumeLimite.h"
#include "Enumeraciones.h"

class ObjetoRigido
{
public:
	//Constructor
	ObjetoRigido();
	ObjetoRigido(TipoGeometria enmTipo, char *FilenamePuntos, char *FilenameIndices);

	//Propiedades
	void set_TipoGeometria(const TipoGeometria &enmTipo){enmtipogeometria = enmTipo;}
	TipoGeometria get_TipoGeometria(){return enmtipogeometria;}

	void set_FilenamePuntos(char *filename){charFnameArchivoPtos = filename;}
	void set_FilenameIndices(char *filename){charFnameInds = filename;}
	
	Superificie_Triangular& getSupTriang(){return objSuperficieTriangular;}
	Volumen_Tetraedral& getVolTetra(){return objVolumenTetraedral;}

	Esfera& get_Esfera(){return objEsfera;}

	void set_PosX(const float &posX){fPosX = posX;}
    void set_PosY(const float &posY){fPosY = posY;}
    void set_PosZ(const float &posZ){fPosZ = posZ;}
    void set_RotX(const float &rotX){fRotX = rotX;}
    void set_RotY(const float &rotY){fRotY = rotY;}
    void set_RotZ(const float &rotZ){fRotZ = rotZ;}

	float get_PosX(){return fPosX;}
	float get_PosY(){return fPosY;}
	float get_PosZ(){return fPosZ;}
	float get_RotX(){return fRotX;}
	float get_RotY(){return fRotY;}
	float get_RotZ(){return fRotZ;}

	//Metodos
	void CargarObjetoRigido();
	void CalcularEsfera(Vertice *v1, Vertice *v2);

private:
	//Atributos
	Superificie_Triangular objSuperficieTriangular;
	Volumen_Tetraedral objVolumenTetraedral;
	TipoGeometria enmtipogeometria;
	TipoModeloFisico enmtipomodelo;
	Esfera objEsfera;
	char *charFnameArchivoPtos;
	char *charFnameInds;

	float fPosX, fPosY, fPosZ;
	float fRotX, fRotY, fRotZ;
};


#endif